package cn.bone.chapter02;

public class ClassLoaderTest {

    public static void main(String... args){

        // 获取系统类加载器
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
        // sun.misc.Launcher$AppClassLoader@18b4aac2
        System.out.println(systemClassLoader);

        // 获取其上层：扩展类加载器
        ClassLoader extClassLoader = systemClassLoader.getParent();
        // sun.misc.Launcher$ExtClassLoader@1540e19d
        System.out.println(extClassLoader);
        
        // 试图获取其上层，失败，获取不到引导类加载器
        ClassLoader bootstrapClassLoader = extClassLoader.getParent();
        // null
        System.out.println(bootstrapClassLoader);


        // 获取用户自定义类的类加载器，默认使用系统类加载器进行加载 AppClassLoader
        ClassLoader currentClassLoader = ClassLoaderTest.class.getClassLoader();
        // sun.misc.Launcher$AppClassLoader@18b4aac2
        System.out.println(currentClassLoader);


        // String 的类加载器
        // String类使用引导类加载器进行加载的
        // Java的核心类库都是使用引导类加载器进行加载的
        // BootstrapClassLoader是使用c、c++编写的
        ClassLoader stringClassLoader = String.class.getClassLoader();
        // null
        System.out.println(stringClassLoader);
    }
}
